package com.jrx.anytxn.accounting.service;

import com.jrx.anytxn.accounting.dto.GaVoucherInfoRep;
import com.jrx.anytxn.accounting.dto.VoucherInfoRes;
import com.jrx.anytxn.accounting.entity.GaVoucherInfo;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;

import java.io.IOException;
import java.util.Date;
import java.util.List;


/**
 * @ClassName IVoucherInfoService
 * @Description: 传票流水表service接口
 * @Author yf
 * @Date 2019/9/9 0009
 * @Version V1.0
 **/
public interface IVoucherInfoService {

    /**
     * 根据条件分页查询传票流水表信息
     *
     * @param pageNum    页码
     * @param pageSize   条数
     * @param tenantId   租户id
     * @param startDate  开始时间
     * @param endDate    结束时间
     * @param loanId     订单id
     * @param customerId 客户id
     * @return
     * @throws TxnBizException
     */
    TxnPage<VoucherInfoRes> getVoucherInfoByPage(Integer pageNum, Integer pageSize, String tenantId, String startDate, String endDate, String loanId, String customerId, String channel) throws TxnBizException;

    /**
     * 按主键查询传票流水表信息
     *
     * @param id         主键
     * @param tenantId   租户ID
     * @param customerId 客户ID
     * @return com.jrx.anytxn.accounting.dto.voucherinfo.VoucherInfoRes
     * @throws TxnBizException
     * @author: fan.yang
     * @date: 2019/9/24 0024 上午 11:44
     */
    VoucherInfoRes getVoucherInfoByIdAndTenIdAndCusId(Long id, String tenantId, String customerId) throws TxnBizException;


    /**
     * 根据科目查询传票流水
     *
     * @param subjectId
     * @param tenantId
     * @param pageNum
     * @param pageSize
     */
    TxnPage<VoucherInfoRes> getAllPageBySubjectId(String subjectId, String tenantId, Integer pageNum, Integer pageSize) throws TxnBizException;

    /**
     * 写入传票流水
     *
     * @param modeList
     * @param tenantId
     * @param userName
     * @return
     * @throws TxnBizException
     */
    TxnPage<VoucherInfoRes> createVoucherInfoByList(List<GaVoucherInfoRep> modeList, String tenantId, String userName) throws TxnException;

    /**
     * 生成传票文件信息
     *
     * @return
     */
    String getVoucherFileMeaage(GaVoucherInfo gaVoucherInfo) throws TxnException;

    /**
     * 生成传票文件
     *
     * @param message
     * @param reportingPath
     * @param fileName
     * @param fileType
     * @throws IOException
     */
    void generatingFile(List<String> message, String reportingPath, String fileName, String fileType) throws IOException;

    /**
     * 删除当前日期的传票流水表
     *
     * @param businessDate 当前日期
     * @return void
     * @author fan.yang
     * date: 2019/12/18 0018 下午 14:18
     */
    void deleteByDateAndInvestorId(Date businessDate, String invesror);

}
